package logique.calculateur;

import logique.preferences.PreferencesUtilisateur;

public abstract class Algorithme {
	
	protected PreferencesUtilisateur prefs;
	protected Calculateur calculateur;
	
	protected Initialisation initialisation;
	
	public Itineraire calculeItineraire(Calculateur c, PreferencesUtilisateur prefs){
		this.prefs = prefs;
		calculateur = c;
		Itineraire itineraire = calcule();
		calculateur.cleanEvaluation();
		return itineraire;
	}
	
	protected abstract Itineraire calcule();
	
	
	public abstract Initialisation getInitialisation();

	public synchronized PreferencesUtilisateur getPreferences() {
		return prefs;
	}

	public synchronized Calculateur getCalculateur() {
		return calculateur;
	}
}
